/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ebe.controller;

import ebe.dao.DB;
import java.sql.SQLException;
import javax.faces.model.DataModel;
import ebe.dao.VagaDAO;
import ebe.model.Usuario;
import ebe.model.Vaga;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import javax.faces.model.ListDataModel;
import javax.faces.model.SelectItem;

/**
 *
 * @author vinicius
 */
public class ControladorVaga {

    private Vaga vaga = new Vaga();
    private DataModel model;
    private List<Vaga> vagasEncontradas = new ArrayList<Vaga>();

    /**
     * @return the vaga
     */
    public Vaga getVaga() {
        return vaga;
    }

    /**
     * @param vaga the vaga to set
     */
    public void setVaga(Vaga vaga) {
        this.vaga = vaga;
    }

    /**
     * @return the model
     */
    public DataModel getModel() {
        return model;
    }

    /**
     * @param model the model to set
     */
    public void setModel(DataModel model) {
        this.model = model;
    }

    //METODOS PARA MANIPULACAO DE DADOS DA VAGA
    public String novaVaga() {
        this.setVaga(new Vaga());
        return "novaVaga";
    }

    public DataModel todasVagas() {
        VagaDAO novaVaga = new VagaDAO();
        setModel(new ListDataModel(novaVaga.procuraVagas()));
        return getModel();
    }

    public String incluirVaga() throws SQLException {
        DB db = null;
        try {
            db = new DB();
            VagaDAO vaga1 = new VagaDAO();
            vaga.setUsuario(ControladorUsuario.usuarioLogado());
            vaga.setEstado(estadoEscolhido);
            vaga.setCidade(cidadeEscolhida);
            vaga.setFuncao(funcoesEscolhida);
            vaga1.salvar(db, vaga);
            return "vagaCadastrada";
        } finally {
            if (db != null) {
                db.close();
            }
        }
    }

    public String candidatar() {

        if (vaga.getForma_contato().equals("contatar")) {
            return "aguardar";
        } else {
            return "contatar";
        }
    }
    private String estadoEscolhido;
    private String funcoesEscolhida;
    private String cidadeEscolhida;
    private static final List<SelectItem> estadosBrasilerios;
    private static final List<SelectItem> funcoesCadastradas;
    private static final HashMap<String, List<SelectItem>> cidadesCadastradas;

    static {

        estadosBrasilerios = new ArrayList<SelectItem>();
        estadosBrasilerios.add(new SelectItem(null, "Escolha um estado"));
        estadosBrasilerios.add(new SelectItem("AC", "AC"));
        estadosBrasilerios.add(new SelectItem("AL", "AL"));
        estadosBrasilerios.add(new SelectItem("AM", "AM"));
        estadosBrasilerios.add(new SelectItem("AP", "AP"));
        estadosBrasilerios.add(new SelectItem("BA", "BA"));
        estadosBrasilerios.add(new SelectItem("CE", "CE"));
        estadosBrasilerios.add(new SelectItem("DF", "DF"));
        estadosBrasilerios.add(new SelectItem("ES", "ES"));
        estadosBrasilerios.add(new SelectItem("GO", "GO"));
        estadosBrasilerios.add(new SelectItem("MA", "MA"));
        estadosBrasilerios.add(new SelectItem("MG", "MG"));
        estadosBrasilerios.add(new SelectItem("MS", "MS"));
        estadosBrasilerios.add(new SelectItem("MT", "MT"));
        estadosBrasilerios.add(new SelectItem("PA", "PA"));
        estadosBrasilerios.add(new SelectItem("PB", "PB"));
        estadosBrasilerios.add(new SelectItem("PE", "PE"));
        estadosBrasilerios.add(new SelectItem("PI", "PI"));
        estadosBrasilerios.add(new SelectItem("PR", "PR"));
        estadosBrasilerios.add(new SelectItem("RJ", "RJ"));
        estadosBrasilerios.add(new SelectItem("RN", "RN"));
        estadosBrasilerios.add(new SelectItem("RO", "RO"));
        estadosBrasilerios.add(new SelectItem("RR", "RR"));
        estadosBrasilerios.add(new SelectItem("RS", "RS"));
        estadosBrasilerios.add(new SelectItem("SC", "SC"));
        estadosBrasilerios.add(new SelectItem("SE", "SE"));
        estadosBrasilerios.add(new SelectItem("SP", "SP"));
        estadosBrasilerios.add(new SelectItem("TO", "TO"));

        List<SelectItem> acre = new ArrayList<SelectItem>();
        acre.add(new SelectItem("Rio Branco"));
        acre.add(new SelectItem("Xapuri"));
        acre.add(new SelectItem("Porto Acre"));
        acre.add(new SelectItem("Jordao"));
        acre.add(new SelectItem("Feijó"));

        List<SelectItem> alagoas = new ArrayList<SelectItem>();
        alagoas.add(new SelectItem("Rio Branco"));
        alagoas.add(new SelectItem("Campo Grande"));
        alagoas.add(new SelectItem("Campo Alegre"));
        alagoas.add(new SelectItem("Murici"));

        List<SelectItem> amazonas = new ArrayList<SelectItem>();
        amazonas.add(new SelectItem("Manaus"));
        amazonas.add(new SelectItem("Sucunduri"));
        amazonas.add(new SelectItem("Autazes"));
        amazonas.add(new SelectItem("Carreiro"));
        amazonas.add(new SelectItem("Guajará"));

        List<SelectItem> amapa = new ArrayList<SelectItem>();
        amapa.add(new SelectItem("Rio Branco"));
        amapa.add(new SelectItem("Macapa"));
        amapa.add(new SelectItem("Cutias"));
        amapa.add(new SelectItem("Porto Grande"));
        amapa.add(new SelectItem("Pacubaú"));

        List<SelectItem> bahia = new ArrayList<SelectItem>();
        bahia.add(new SelectItem("Salvador"));
        bahia.add(new SelectItem("Vitoria da Conquista"));
        bahia.add(new SelectItem("Itabuna"));
        bahia.add(new SelectItem("Brumado"));
        bahia.add(new SelectItem("Juazeiro"));

        List<SelectItem> ceara = new ArrayList<SelectItem>();
        ceara.add(new SelectItem("Fortaleza"));
        ceara.add(new SelectItem("Nova Russa"));
        ceara.add(new SelectItem("Jaguaribe"));
        ceara.add(new SelectItem("Catarina"));
        ceara.add(new SelectItem("Limoeiro do Norte"));

        List<SelectItem> distFederal = new ArrayList<SelectItem>();
        distFederal.add(new SelectItem("Brasilia"));
        distFederal.add(new SelectItem("Recanto das Emas"));
        distFederal.add(new SelectItem("São Sebastião"));
        distFederal.add(new SelectItem("Planaltina"));
        distFederal.add(new SelectItem("Samanbaia"));

        List<SelectItem> espSanto = new ArrayList<SelectItem>();
        espSanto.add(new SelectItem("Vitoria"));
        espSanto.add(new SelectItem("São Gabriel da Palha"));
        espSanto.add(new SelectItem("Cacheiro do Ipamirim"));
        espSanto.add(new SelectItem("Linhares"));
        espSanto.add(new SelectItem("Colina"));

        List<SelectItem> goias = new ArrayList<SelectItem>();
        goias.add(new SelectItem("Goiania"));
        goias.add(new SelectItem("Anápolis"));
        goias.add(new SelectItem("São Miguel do Araguaia"));
        goias.add(new SelectItem("Niquelândia"));
        goias.add(new SelectItem("Cidade de Goiás"));

        List<SelectItem> matoGrossoSul = new ArrayList<SelectItem>();
        matoGrossoSul.add(new SelectItem("Campo Grande"));
        matoGrossoSul.add(new SelectItem("Dourados"));
        matoGrossoSul.add(new SelectItem("São Gabriel do Oeste"));
        matoGrossoSul.add(new SelectItem("Maracajú"));
        matoGrossoSul.add(new SelectItem("Taquarasu"));

        List<SelectItem> matoGrosso = new ArrayList<SelectItem>();
        matoGrosso.add(new SelectItem("Cuiabá"));
        matoGrosso.add(new SelectItem("Portal do Araguaia"));
        matoGrosso.add(new SelectItem("Primavera do Leste"));
        matoGrosso.add(new SelectItem("General Carneiro"));
        matoGrosso.add(new SelectItem("Morro Sao Geroni"));

        List<SelectItem> maranhao = new ArrayList<SelectItem>();
        maranhao.add(new SelectItem("São Luis"));
        maranhao.add(new SelectItem("Vargem Grande"));
        maranhao.add(new SelectItem("Tasso Fragoso"));
        maranhao.add(new SelectItem("Amarante do Maranhão"));
        maranhao.add(new SelectItem("Araguanã"));

        List<SelectItem> minasGerais = new ArrayList<SelectItem>();
        minasGerais.add(new SelectItem("Belo Horizonte"));
        minasGerais.add(new SelectItem("Governador Valadares"));
        minasGerais.add(new SelectItem("Montes Claros"));
        minasGerais.add(new SelectItem("Ipatinga"));
        minasGerais.add(new SelectItem("São Jose do Rio Preto"));

        List<SelectItem> para = new ArrayList<SelectItem>();
        para.add(new SelectItem("Belém"));
        para.add(new SelectItem("Xinguara"));
        para.add(new SelectItem("Paragominas"));
        para.add(new SelectItem("Itupiranga"));
        para.add(new SelectItem("Paraopebas"));

        List<SelectItem> paraiba = new ArrayList<SelectItem>();
        paraiba.add(new SelectItem("Campina Grande"));
        paraiba.add(new SelectItem("Patos"));
        paraiba.add(new SelectItem("Mamanguape"));
        paraiba.add(new SelectItem("Taperoa"));
        paraiba.add(new SelectItem("Surubin"));

        List<SelectItem> parana = new ArrayList<SelectItem>();
        parana.add(new SelectItem("Araraquara"));
        parana.add(new SelectItem("Curitiba"));
        parana.add(new SelectItem("Blumenau"));
        parana.add(new SelectItem("Piracicaba"));
        parana.add(new SelectItem("Presidente Prudente"));

        List<SelectItem> pernambuco = new ArrayList<SelectItem>();
        pernambuco.add(new SelectItem("Vicencia"));
        pernambuco.add(new SelectItem("Recife"));
        pernambuco.add(new SelectItem("Dormentes"));
        pernambuco.add(new SelectItem("São Benedito do Sul"));
        pernambuco.add(new SelectItem("Salgadinho"));

        List<SelectItem> piaui = new ArrayList<SelectItem>();
        piaui.add(new SelectItem("Eliseu Martins"));
        piaui.add(new SelectItem("Campo Maior"));
        piaui.add(new SelectItem("Paulistana"));
        piaui.add(new SelectItem("Miguel Alves"));
        piaui.add(new SelectItem("Batalha"));

        List<SelectItem> rioJaneiro = new ArrayList<SelectItem>();
        rioJaneiro.add(new SelectItem("Rio de Janeiro"));
        rioJaneiro.add(new SelectItem("Barbacema"));
        rioJaneiro.add(new SelectItem("Santo Antonio de Pabua"));
        rioJaneiro.add(new SelectItem("Miracema"));
        rioJaneiro.add(new SelectItem("Rio das Ostras"));

        List<SelectItem> rioGdenorte = new ArrayList<SelectItem>();
        rioGdenorte.add(new SelectItem("Natal"));
        rioGdenorte.add(new SelectItem("Caraguatatema"));
        rioGdenorte.add(new SelectItem("Caiacó"));
        rioGdenorte.add(new SelectItem("Santa Cruz"));
        rioGdenorte.add(new SelectItem("Santana dos Matos"));

        List<SelectItem> rioGdeSul = new ArrayList<SelectItem>();
        rioGdeSul.add(new SelectItem("Porto Alegre"));
        rioGdeSul.add(new SelectItem("Santa Maria"));
        rioGdeSul.add(new SelectItem("Passo Fundo"));
        rioGdeSul.add(new SelectItem("Santa Cruz do Sul"));
        rioGdeSul.add(new SelectItem("Bento Gonçalves"));

        List<SelectItem> rondonia = new ArrayList<SelectItem>();
        rondonia.add(new SelectItem("Alta Floresta"));
        rondonia.add(new SelectItem("Porto Velho"));
        rondonia.add(new SelectItem("Castanheiras"));
        rondonia.add(new SelectItem("Jamari"));
        rondonia.add(new SelectItem("Rolim do Moura"));

        List<SelectItem> roraima = new ArrayList<SelectItem>();
        roraima.add(new SelectItem("Boa Vista"));
        roraima.add(new SelectItem("Alto Alegre"));
        roraima.add(new SelectItem("Caracaraí"));
        roraima.add(new SelectItem("Rorainopólis"));
        roraima.add(new SelectItem("Iracema"));

        List<SelectItem> saoPaulo = new ArrayList<SelectItem>();
        saoPaulo.add(new SelectItem("Americana"));
        saoPaulo.add(new SelectItem("Coronel Macedo"));
        saoPaulo.add(new SelectItem("Ferraz de Vasconcelos"));
        saoPaulo.add(new SelectItem("Osasco"));
        saoPaulo.add(new SelectItem("Sao Paulo"));

        List<SelectItem> santaCatarina = new ArrayList<SelectItem>();
        santaCatarina.add(new SelectItem("Bom Jardim da Serra"));
        santaCatarina.add(new SelectItem("Dona Emma"));
        santaCatarina.add(new SelectItem("Mirim Doce"));
        santaCatarina.add(new SelectItem("Petrolandia"));
        santaCatarina.add(new SelectItem("Florianópolis"));

        List<SelectItem> sergipe = new ArrayList<SelectItem>();
        sergipe.add(new SelectItem("Aracaju"));
        sergipe.add(new SelectItem("Frei Paulo"));
        sergipe.add(new SelectItem("Laranjeiras"));
        sergipe.add(new SelectItem("Poço Redondo"));
        sergipe.add(new SelectItem("Umbauba"));

        List<SelectItem> tocantins = new ArrayList<SelectItem>();
        tocantins.add(new SelectItem("Almas"));
        tocantins.add(new SelectItem("Dianópolis"));
        tocantins.add(new SelectItem("Conceicao do Araguaia"));
        tocantins.add(new SelectItem("Gurupi"));
        tocantins.add(new SelectItem("Palmas"));

        cidadesCadastradas = new HashMap<String, List<SelectItem>>();
        cidadesCadastradas.put(null, new ArrayList<SelectItem>());
        cidadesCadastradas.put("AC", acre);
        cidadesCadastradas.put("AL", alagoas);
        cidadesCadastradas.put("AM", amazonas);
        cidadesCadastradas.put("AP", amapa);
        cidadesCadastradas.put("BA", bahia);
        cidadesCadastradas.put("CE", ceara);
        cidadesCadastradas.put("DF", distFederal);
        cidadesCadastradas.put("GO", goias);
        cidadesCadastradas.put("MA", maranhao);
        cidadesCadastradas.put("MT", matoGrosso);
        cidadesCadastradas.put("MS", matoGrossoSul);
        cidadesCadastradas.put("MG", minasGerais);
        cidadesCadastradas.put("PA", para);
        cidadesCadastradas.put("PB", paraiba);
        cidadesCadastradas.put("PR", parana);
        cidadesCadastradas.put("PE", pernambuco);
        cidadesCadastradas.put("PI", piaui);
        cidadesCadastradas.put("RJ", rioJaneiro);
        cidadesCadastradas.put("RN", rioGdenorte);
        cidadesCadastradas.put("RS", rioGdeSul);
        cidadesCadastradas.put("RO", rondonia);
        cidadesCadastradas.put("RR", roraima);
        cidadesCadastradas.put("SC", santaCatarina);
        cidadesCadastradas.put("SP", saoPaulo);
        cidadesCadastradas.put("SE", sergipe);
        cidadesCadastradas.put("TO", tocantins);

        funcoesCadastradas = new ArrayList<SelectItem>();
        funcoesCadastradas.add(new SelectItem("Atendente"));
        funcoesCadastradas.add(new SelectItem("Auxiliar de Corredor"));
        funcoesCadastradas.add(new SelectItem("Assistente de Estoque"));
        funcoesCadastradas.add(new SelectItem("Balconista"));
        funcoesCadastradas.add(new SelectItem("Cozinheira"));
        funcoesCadastradas.add(new SelectItem("Diarista"));
        funcoesCadastradas.add(new SelectItem("Eletricista"));
        funcoesCadastradas.add(new SelectItem("Encanador"));
        funcoesCadastradas.add(new SelectItem("Enfermeira"));
        funcoesCadastradas.add(new SelectItem("Entregador"));
        funcoesCadastradas.add(new SelectItem("Estoquista"));
        funcoesCadastradas.add(new SelectItem("Fiscal de Loja"));
        funcoesCadastradas.add(new SelectItem("Fiscal de Prova"));
        funcoesCadastradas.add(new SelectItem("Frentista"));
        funcoesCadastradas.add(new SelectItem("Garçon"));
        funcoesCadastradas.add(new SelectItem("Jardineiro"));
        funcoesCadastradas.add(new SelectItem("Motorista"));
        funcoesCadastradas.add(new SelectItem("Operador de Caixa"));
        funcoesCadastradas.add(new SelectItem("Segurança"));
        funcoesCadastradas.add(new SelectItem("Vendas Temporarias"));
        funcoesCadastradas.add(new SelectItem("Zelador"));
        funcoesCadastradas.add(new SelectItem("Outros"));
    }

    public List<SelectItem> getEstadosExistentes() {
        return estadosBrasilerios;
    }

    public List<SelectItem> getFuncoesCadastradas() {
        return funcoesCadastradas;
    }

    public List<SelectItem> getCidadesExistentes() {
        List<SelectItem> cidadesEstado = cidadesCadastradas.get(estadoEscolhido);
        return cidadesEstado;
    }

    public String getEstadoEscolhido() {
        return estadoEscolhido;
    }

    public void setEstadoEscolhido(String estadoEscolhido) {
        this.estadoEscolhido = estadoEscolhido;
    }

    public String getFuncoesEscolhida() {
        return funcoesEscolhida;
    }

    public void setFuncoesEscolhida(String funcoesEscolhida) {
        this.funcoesEscolhida = funcoesEscolhida;
    }

    public String getCidadeEscolhida() {
        return cidadeEscolhida;
    }

    public void setCidadeEscolhida(String cidadeEscolhida) {
        this.cidadeEscolhida = cidadeEscolhida;
    }

    public DataModel getVagasEncontradas() throws SQLException {
        model = new ListDataModel(vagasEncontradas);
        return model;
    }

    public DataModel getVagasPorCidade() throws SQLException {
        DB db = new DB();
        model = new ListDataModel(new VagaDAO().vagasPorCidade(db));
        return model;
    }

    public String pesquisar() throws SQLException {
        DB db = new DB();
        try {
            vagasEncontradas = new VagaDAO().buscaVaga(db, estadoEscolhido, cidadeEscolhida, funcoesEscolhida);
        } finally {
            db.close();
        }
        return "mostrarVagas";
    }

    public String detalhar() throws SQLException {
        vaga = getVagaManipulacao();
        return "detalhesVaga";
    }

    public Vaga getVagaManipulacao() {
        Vaga livro = (Vaga) model.getRowData();
        return livro;
    }
}
